#ifndef _MOTASP_TYPE_H_
#define _MOTASP_TYPE_H_
/****************************************************************************
 *Copyright(C),2024, Ningbo Tuopu Group Co., Ltd.
 *FileName:   RtcHdlr_Type_I.h
 *Date:       2024-12-16 19:03:04
 *Author:     TianGui.Wang
 *Version:    0
 *Path:       
 *Description:
 ****************************************************************************/
/****************************************************************************/
/*                             Include area                                 */
/****************************************************************************/
#include "MotAsp/MotAsp_Base.h"
/****************************************************************************/
/*                             Definition area                              */
/****************************************************************************/

/****************************************************************************/
/*                             Typedef area                                 */
/****************************************************************************/
typedef struct {
    uint8_T Sta;
    uint16_T Val;
}MotAsp_Type_Variable_State_U16;

typedef struct {
    uint8_T Sta;
    int32_T Val;
}MotAsp_Type_Variable_State_S32;

/******************************************************* Virtaul Calc************************************************** */
typedef enum {
    MOTASP_TYPE_VIRTAUL_INIT = 0U,
    MOTASP_TYPE_VIRTAUL_UP,
    MOTASP_TYPE_VIRTAUL_DOWN,
}MotAsp_Type_VIRTUAL_DIR_STATE;

typedef struct {
    uint32_T Min_To_Cycle;
    int16_T Rpm_Step;
    int32_T Max_Angle;
    uint8_T  Poles;

    int16_T Rpm;
    uint16_T Angle;
}MotAsp_Type_VIRTUAL_CALC_STRUCT;

/******************************************************* Virtaul  Calc************************************************** */


/*******************************************************Learn E Angle************************************************** */
typedef struct {
    uint8_T  En;
    uint8_T  State;
    uint16_T  Angle;
    uint16_T  M_Angle;
    MotAsp_Type_Variable_State_U16 Result;
    MotAsp_Type_Variable_State_U16 M_Result;
}MotAsp_Type_LEARN_E_ANGLE_STRUCT;

/*******************************************************Learn E Angle************************************************** */

/*******************************************************Learn P Angle************************************************** */
typedef struct {
    uint8_T  En;
    uint8_T  State;
    int32_T  Pos;
    MotAsp_Type_Variable_State_S32 Result;
}MotAsp_Type_LEARN_P_ANGLE_STRUCT;

/*******************************************************Learn P Angle************************************************** */

/*******************************************************SPD Simple************************************************** */
typedef struct {
    int16_T *Date;
    uint16_T CNT;

    uint16_T Cnt;
    int16_T  Spd;
}MotAsp_Type_SPD_SIMPLE_STRUCT;

/*******************************************************SPD Simple************************************************** */

/*******************************************************SPD Calc************************************************** */
typedef struct {
    uint16_T Poles;
    uint16_T CNT;
    int16_T *Date;
    uint32_T Min_To_Cycle;
    int32_T Max_Angle;
    uint16_T molecule0;
    uint16_T numerator0;
    uint16_T molecule1;
    uint16_T numerator1;

    int16_T Spd_Delay0;

    int16_T  Spd;
}MotAsp_Type_SPD_CALC_STRUCT;
/*******************************************************SPD Calc************************************************** */

/*******************************************************Abs Pos Calc************************************************** */
typedef enum{
   MotAsp_Type_ABS_POS_CALC_INIT = 0U, 
   MotAsp_Type_ABS_POS_CALC_LEARN_P,
   MotAsp_Type_ABS_POS_CALC_NORMAL,
}MotAsp_Type_ABS_POS_CALC_STATE;

typedef struct {
    uint16_T Poles;
    uint32_T Lead_Screw;
    int32_T Max_Angle;

    MotAsp_Type_ABS_POS_CALC_STATE State;
    int32_T Pos;
    int32_T Pos_Basic;
    int32_T Last_Rst_Pos; /* */
    int32_T P_Learn; /* */
    int32_T Result;
}MotAsp_Type_ABS_POS_CALC_STRUCT;
/*******************************************************Abs Pos Calc************************************************** */

/****************************************************************************/
/*                             Local data at RAM                            */
/****************************************************************************/

/****************************************************************************/
/*                             Global data at RAM                           */
/****************************************************************************/

/****************************************************************************/
/*                        Global data at RAM declare area                   */
/****************************************************************************/

/****************************************************************************/
/*                             Local data at ROM                            */
/****************************************************************************/

/****************************************************************************/
/*                             Global data at ROM                           */
/****************************************************************************/

/****************************************************************************/
/*                        Global data at ROM declare area                   */
/****************************************************************************/

/****************************************************************************/
/*                        Local function declare area                       */
/****************************************************************************/

/****************************************************************************/
/*                        Global function declare area                      */
/****************************************************************************/

#endif
